/**
 * 获取某范围之间的黄金分割点
 * @param a 开始位置
 * @param b 结束位置
 * @returns {number}
 */
function goldenSectionSelect(a, b) {
    const phi = (1 + Math.sqrt(5)) / 2; // 黄金分割比例
    const x1 = b - (b - a) / phi; // 选择 x1
    return Math.round(x1); // 返回四舍五入后的值
}

// 从 5 到 20 中选择一个数字
const selectedNumber = goldenSectionSelect(200, 500);
console.log('Selected Number:', selectedNumber);


/**
 * 获取某范围之间的黄金分割点
 * @param a 开始位置
 * @param b 结束位置
 * @returns {number}
 */
function goldenSectionSelect2(a, b) {
    const phi = (1 + Math.sqrt(5)) / 2; // 黄金分割比例
    const tolerance = 1; // 容忍度，用于停止条件

    while (Math.abs(b - a) > tolerance) {
        const x1 = b - (b - a) / phi;
        const x2 = a + (b - a) / phi;

        // 选择 x1 或 x2 中的一个（这里选择 x1）
        a = x1;
    }

    // 返回最终的整数（四舍五入）
    return Math.round(a);
}

// 从 5 到 20 中选择一个数字
const selectedNumber2 = goldenSectionSelect2(5, 20);
console.log('Selected Number2:', selectedNumber2);